﻿Imports System.IO
Public Class Producto : Implements IEquatable(Of Producto)
    Private MINIMO = 0

    Private _Nombre As String
    Private _Precio As Decimal

    ''' <summary>
    ''' Nombre del Producto
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Nombre As String
        Get
            Return _Nombre
        End Get
        Set(ByVal value As String)
            If value.Length >= 2 Then
                _Nombre = value
            End If
        End Set
    End Property
    ''' <summary>
    ''' Precio del producto
    ''' </summary>
    ''' <value>Mayor o igual que cero</value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Precio As Decimal
        Get
            Return _Precio
        End Get
        Set(ByVal value As Decimal)
            If value > 0 Then
                _Precio = value
            Else
                _Precio = 0
            End If
        End Set
    End Property
    ''' <summary>
    ''' Breve descripción del producto
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Descripcion As String

    ''' <summary>
    ''' Devuelve la foto completa
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Foto As String

    ''' <summary>
    ''' Constructor vacío
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

    End Sub
    ''' <summary>
    ''' La lista de Productos se crea con datos
    ''' </summary>
    ''' <param name="nombre">Nombre del producto</param>
    ''' <param name="precio">Precio del producto</param>
    ''' <param name="descripcion">Descripción del producto</param>
    ''' <param name="foto">Foto</param>
    ''' <remarks></remarks>
    Public Sub New(ByVal nombre As String, ByVal precio As Decimal, ByVal descripcion As String, ByVal foto As String)
        Me.Nombre = nombre
        Me.Precio = precio
        Me.Descripcion = descripcion
        Me.Foto = foto
    End Sub
    ''' <summary>
    ''' Define cuando se consideran iguales dos Productos, y es cuando siendo del mismo tipo (Productos) les coincide el Nombre
    ''' </summary>
    ''' <param name="other"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function Equals1(other As Producto) As Boolean Implements System.IEquatable(Of Producto).Equals
        Return other IsNot Nothing AndAlso Me.Nombre.ToLower = other.Nombre.ToLower
    End Function
End Class
